parse tree generation